﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebRamosUC.Models;
using WebRamosUC.Models.Helpers;

namespace WebRamosUC.Controllers
{
    public class FacultadController : Controller
    {
        //
        // GET: /Facultad/

        public ActionResult Index()
        {
            RepositorioFacultad repoFacultad = new RepositorioFacultad();

            IQueryable<Facultad> listaFacultades = repoFacultad.AllFacultades().OrderBy(f => f.Nombre);

            return View(listaFacultades.ToList());
        }

        //
        // GET: /Facultad/Details/Id

        public ActionResult Details(int? id)
        {
            RepositorioFacultad repoFacultad = new RepositorioFacultad();
            RepositorioCurso repoCurso = new RepositorioCurso();
            RepositorioRecomendacion repoRecomendacion = new RepositorioRecomendacion();
            RepositorioProfesor repoProfe = new RepositorioProfesor();

            Facultad facu = repoFacultad.GetFacultad(id ?? -1);

            if (facu != null)
            {
                FacultadViewData viewData = new FacultadViewData();
                viewData.Facultad = facu;
                viewData.CursosModificados = repoCurso.GetCursosModificados(10, facu.IDFacultad).ToList();
                viewData.CursosPopulares = repoCurso.GetCursosPopulares(10, facu.IDFacultad).ToList();
                viewData.UltimosComentarios = repoRecomendacion.GetUltimasRecomendaciones(10, facu.IDFacultad).ToList();
                viewData.CursosMejorEvaluados = repoCurso.GetCursosMejorEvaluados(10, facu.IDFacultad).ToList();
                //viewData.ProfesMejorEvaluados = repoProfe.GetProfesoresMejorEvaluados(10, facu.IDFacultad).ToList();

                return View(viewData);
            }
            else
            {
                return View("NotFound");
            }
        }

        public ActionResult Cursos(string idFacultad_page)
        {
            try
            {
                RepositorioCurso repocurso = new RepositorioCurso();
                int pageSize = 30;
                int idFacultad;
                int page;

                if (idFacultad_page.Contains("-"))
                {
                    string[] info = idFacultad_page.Split('-');
                    idFacultad = Convert.ToInt32(info[0]);
                    page = Convert.ToInt32(info[1]);
                }
                else
                {
                    idFacultad = Convert.ToInt32(idFacultad_page);
                    page = 0;
                }

                IQueryable<Curso> cursos = repocurso.GetCursosFacultad(idFacultad);

                RepositorioFacultad repofac = new RepositorioFacultad();
                Facultad facul = repofac.GetFacultad(idFacultad);


                if ((cursos.Count(c => c.IDFacultad == idFacultad) > 0) && (facul != null))
                {
                    var paginatedCursos = new PaginatedList<Curso>(cursos, page, pageSize);

                    CursosFacultadModel model = new CursosFacultadModel() { cursos = paginatedCursos, facultad = facul };
                    return View("CursosFacultad", model);
                }
                else
                    return View("NotFound");

            }
            catch
            {
                return View("NotFound");
            }
        }
    }
}
